package stores;


import java.util.HashMap;

/**
 * Creer un environnement pour la sauvegarde des informations
 * pour chaque Thread lance.
 * @author 3003064_3153319s
 */
public class StoreEnvirThread {

	public static HashMap<Long, StoreEnvirMeth> myStoresEnv = new HashMap<Long, StoreEnvirMeth>();

	private synchronized static StoreEnvirMeth getStoreEnv(){
		Long IdThread = Thread.currentThread().getId();
		if(!myStoresEnv.containsKey(IdThread)){
			myStoresEnv.put(IdThread, new StoreEnvirMeth());
			System.out.println("Creer un StoreEnvMeth pour le Thread : " + IdThread);
		}
		return myStoresEnv.get(IdThread);
	}
	
	/**
	 * Nouvelle Pile de sauvegarde pour le thead courant
	 */
	public synchronized static void newEnv(){
		getStoreEnv().newEnv();
	}

	/**
	 * Ajout de la sauvegarde de l'objet modifier par le thead courant
	 * @param o
	 */
	public synchronized static void AddObjectInTheLastEnv(Object o){
		getStoreEnv().AddObjectInTheLastEnv(o);
	}

	/**
	 * Restaure les objets du manipuler par le thread courant
	 */
	public synchronized static void RestaureAndRemoveLastEnv(){
		getStoreEnv().RestaureAndRemoveLastEnv();
	}

	/**
	 *  Suppression des objets restaures
	 */
	public synchronized static void DeleteLastEnv(){
		getStoreEnv().DeleteLastEnv();

	}
}
